import axios from 'axios'
import JSONbig from 'json-bigint'
import { getUser } from './storage'

// 这里进行axios的配置
// 可以使用自定义配置新建一个axios实例，可以写自己的配置项
const http = axios.create({
  baseURL: 'http://ttapi.research.itcast.cn', // 基地址
  //   timeout: 1000, // 请求等待延时时间
  //   headers: { 'X-Custom-Header': 'foobar' } //请求头
  transformResponse: [function (data) {
    // 这里的data是字符串，在这个字符串的是没有丢失精度的，所以需要在这里先把精度调好
    // console.log(data)
    // 后端返回数据可能不是json字符串，而是JSON.parse(),只能处理json字符串，try,catch一下
    try {
      // 作用1：把json字符串转为js对象
      // 作用2：把里面的大数字做安全处理
      return JSONbig.parse(data)
    } catch (err) {
      return data
    }
  }]
})

// 添加请求拦截器
http.interceptors.request.use(function (config) {
  // 在发送请求之前统一写的token
  const userInfo = getUser()
  // 判断是否有token，有就用上
  if (userInfo.token) {
    config.headers.Authorization = `Bearer ${userInfo.token}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
http.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error)
})
export default http
